/**
 * content_check_helper.js
 * 内容检查辅助工具 - PLM项目专用
 */

// 导入路径解析器
const pathResolver = require('../config/path_resolver.js').getRootConfigPath('path_resolver.js').getRootConfigPath('path_resolver.js');

// 尝试加载项目helper
let helper;
try {
  helper = require('./helper.js');
  console.log('成功加载项目helper');
} catch (e) {
  console.error('加载项目helper失败，使用简易实现', e);
  // 简易helper实现
  helper = {
    isDefined: (val) => val !== undefined && val !== null,
    isEmpty: (val) => val === undefined || val === null || val === ''
  };
}

/**
 * 内容校验辅助工具
 */
const contentCheckHelper = {
  /**
   * 图片校验
   * @param {string} filePath - 图片路径
   * @returns {Promise<boolean>} 校验结果
   */
  imgCheck: async function(filePath) {
    console.log('图片校验', filePath);
    
    if (!filePath) return false;
    
    // 简单校验：检查文件后缀
    const validExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp'];
    const fileExt = filePath.split('.').pop().toLowerCase();
    
    if (!validExtensions.includes(fileExt)) {
      console.warn('不支持的图片格式:', fileExt);
      return false;
    }
    
    // 在真实环境中可以调用云函数进行内容安全检测
    // 本实现直接返回true
    return true;
  },
  
  /**
   * 文本校验
   * @param {string} text - 待校验文本
   * @returns {Promise<boolean>} 校验结果
   */
  textCheck: async function(text) {
    console.log('文本校验', text ? text.substring(0, 100) + '...' : '');
    
    if (!text) return true;
    
    // 基本敏感词过滤（实际应用中可配置更多词汇）
    const sensitiveWords = ['敏感词1', '敏感词2', '敏感词3'];
    for (const word of sensitiveWords) {
      if (text.includes(word)) {
        console.warn('包含敏感词:', word);
        return false;
      }
    }
    
    // 在真实环境中可以调用云函数进行内容安全检测
    // 本实现直接返回true
    return true;
  },
  
  /**
   * 标题校验
   * @param {string} title - 标题
   * @returns {Promise<boolean>} 校验结果
   */
  titleCheck: async function(title) {
    if (!title) return false;
    
    // 长度校验
    if (title.length < 2 || title.length > 100) {
      console.warn('标题长度不符合要求:', title.length);
      return false;
    }
    
    // 内容检查
    return this.textCheck(title);
  },
  
  /**
   * 内容校验
   * @param {Array|string} content - 富文本内容或普通文本
   * @returns {Promise<boolean>} 校验结果
   */
  contentCheck: async function(content) {
    if (!content) return false;
    
    // 处理富文本数组
    if (Array.isArray(content)) {
      for (const item of content) {
        if (item.type === 'text' && !(await this.textCheck(item.val))) {
          return false;
        }
        
        if (item.type === 'img' && !(await this.imgCheck(item.val))) {
          return false;
        }
      }
      return true;
    }
    
    // 普通文本
    return this.textCheck(content);
  }
};

// 导出模块
module.exports = contentCheckHelper; 